The present invention relates generally to communication protocols, and more specifically to a system for providing flow control in a reliable, multicast enabled communication network.
In many network applications, data cannot be transmitted from a sender to one or more receiver(s) at an arbitrary speed. The rate of data transmission must account for the fact that, at some point, a receiver's memory resources may become exhausted. In order to avoid this condition some kind of limitation on the data transmission must be imposed. The systems that define and impose such limitations are commonly referred to as flow control systems. In the Transmission Control Protocol (TCP) of the TCP/IP protocol stack, flow control is provided between a single transmitter and a single receiver through use of what is known as a “sliding window.” In the TCP protocol, the sliding window defines a maximum number of “outstanding” bytes that may be transmitted by a device without acknowledgement by a single destination device.
A significant drawback in existing systems relates to communication over networks that include multipoint delivery capabilities over large latency links, such as those provided via multicast addressing through a communication satellite. In such an operational environment, a transmitting device may be sending data to hundreds or even thousands of destination devices. For example, using the TCP protocol to provide flow control in such a context would require forming TCP connections between the transmitting device and each receiving device, resulting in significant additional overhead. Moreover, the TCP protocol is limited in the number of outstanding messages that a transmitting device can send without acknowledgement. In a network with large communication latency, such as through a communication satellite, such a limitation may have a significant impact on network performance. Another communications protocol in the TCP/IP protocol stack is UDP (User Datagram Protocol). While UDP does not require the connection setup overhead associated with TCP, UDP suffers from a lack of delivery guarantees, which is unacceptable in many applications.
A significant design consideration in communication satellite based networks is the use of a “back-channel” for delivery of acknowledgements from receiving devices. In many cases, the transmitting device will be using a relatively high-bandwidth data channel for communication with the receivers, while the acknowledgements from the receiving devices are sent back to the transmitter over a somewhat lower bandwidth back-channel that may have a higher loss rate than the data channel. An example of such a back-channel that may be used in this way is the Internet. Accordingly, it would be desirable to enable a transmitter to transmit a relatively large amount of data without waiting for acknowledgements from potentially large numbers of receivers over a back-channel that may be somewhat slow and relatively unreliable.
The above problems become exacerbated as the broadcast of music, videos, news, or live events from content server systems to PCs becomes increasingly popular. In this context, the flow of data should take place via a stable connection with optimal speed. The data files transferred may include various types of data, including static images, video data, audio data, executable files, presentation data, applet data, data files, and the like. Such media files are generally referred to as “streaming media.” Delivery of streaming media typically involves transmission at a select (often subscribed) bit-rate, and with a desired timeliness. The streaming media is adapted for playback in a desired order without regard to the order the streaming media data are received by a client system. In view of these requirements, any solution to the above deficiencies in existing systems should be capable of supporting different streaming media formats, and operate to deliver content in a high-quality form and without delay of transmission.